<?php
// +----------------------------------------------------------------------
// | B5Yii2CMF V3.0 [快捷通用基础管理开发平台]
// +----------------------------------------------------------------------
// | Author: 冰舞 <357145480@qq.com>
// +----------------------------------------------------------------------
declare (strict_types=1);

namespace api\modules\v1;

use common\extend\exception\ErrorCode;
use common\extend\exception\B5HttpException;

/**
 * 所有需要登录验证的基类
 * Class AuthController
 * @package api\modules\v1
 */
class AuthController extends ApiController
{
    protected bool $checkToken = true; // 检测token


    protected bool $tokenFailBack = true; // 检测token失败直接返回错误


    /**
     * 不参与登录的方法，checkToken = true   tokenFailBack =false,通过 该参数控制
     * 未登录不会直接返回错误，自己可以通过user_id 或 getUser进行
     * @var array
     */
    protected array $noCheckLogin = [];

    /**
     * 方法前执行操作
     * @param $action
     * @return bool
     * @throws B5HttpException
     */
    public function beforeAction($action): bool
    {
        if (!parent::beforeAction($action)) {
            return false;
        }
        if ($this->userId < 1 && !in_array($action->id, $this->noCheckLogin)) {
            throw new B5HttpException(400, '未登录或登录失效', ErrorCode::API_TOKEN_ERROR);
        }
        return true;
    }
}